Directory (Path) Traversal Vulnerability
Directory (Path) Traversal Vulnerability Nedir?
Bir web sitesini birçok kullanıcısı ile bağlantısı olan bir bilgisayar gibi düşünebiliriz. Fakat her isteyen bu bilgisayarla bağlantı kurabiliyorsa ortaya savunmasız bir sistem çıkar. Adminler de buna önlem olarak dosyalara authentication uygular ve herhangi biri bağlantı kurduğunda sadece adminin belirlediği sayfalara erişim sağlayabilir.
“Path Traversal (Geçiş Yolu) nedir” konusuna gelirsek saldırganın erişim yetkisi bulunmaması gereken dosyalara erişim sağlaması olarak tanımlayabiliriz. Öncelikle test yapacağımız işletim sistemini bilmeliyiz. Tarama yaparken bize zaman kazandıracaktır. Adminin önceden oluşturup sistemden silmediği dosyalar da diğer birçok zafiyete sebebiyet verebilir. Örnek vermek gerekirse admin 2009 yılında web sitesine kullanıcıların cv yükleyebileceği bir sayfa oluşturmuş olduğunu varsayalım ve 2010 yılında bu sayfaya yönlendirmeyi kaldırıyor. 2022 yılında bu sayfaya çeşitli testler ile ulaşılıyor. Test aşamasında bu sayfaya bir shell dosyası enjekte edip admin haklarına kadar gidebiliriz. Bir bilgisayar içerisinde ne kadar çok dosya olduğunu az çok tahmin edebiliyoruz. Önemli bir zafiyettir. Şimdi nasıl test edilir inceleyelim.
Nasıl Test Edilir?
Test yaparken 2 aşama vardır. 1. Aşama web sitelerinin sayfa kaynaklarını incelemek inceleme aşamasında yönlendirmesi sayfa üzerinde bulunmayan fakat var olan bir dosya incelenilebilir. Manuel olarak statik dosyalar üzerinde geri gelme aşaması örneğin https://alperencoskun.com/files/alperenresim.jpg böyle bir adres gördük. Resim dosyasını silerek files klasörüne ulaşmayı deneyebiliriz.
Files dosyasına ulaşmamız demek direkt olarak bu açığı bulmuş olduğumuz anlamına gelmeyebilir ya da bilgi seviyesinde bir rapor olmuş olabilir.
Bir diğer manuel test ise eğer biz bu zafiyetin varlığından şüpheleniyorsak ama aradığımız dosyanın hangi dizinde olduğunu bulamıyorsak. /../etc/passwd ,
/../../etc/passwd şeklinde de manuel ilerleyebiliriz.
Test aşamasında her testte tek tek denemek yerine bunun ile ilgili 2 tool öğreneceğiz. Birincisi dotdotpwn, bu tool genellikle dizin bulma işlemleri için kolaylık sağlar.
Dotdotpwn toolunun kurulum ve kullanım için aşağıdaki github adresinden de ulaşabilirsiniz:
https://github.com/wireghoul/dotdotpwn
Directory Traversal için owasp’ın hazırladığı en hızlı toollardan biri olan Dirbuster’i inceleyeceğiz diğerlerine göre hızı daha yüksektir. (Hızını fazla ayarlarsak web site veya bulut sunucu tarafından engellenebiliriz bu yüzden default ayarda kulanmak daha sağlıklı olacaktır). Terminale dirbuster yazdığımız zaman toolu başlatabiliriz. Toolu bWAPP üzerinde gösterelim
Tarama başladıktan sonra aşağıdaki gibi bize erişmeye çalıştığımız dosyaların-dizinlerin bize sunucu tarafından verdiği http cevapları görebiliyoruz. 200 cevabını aldıysak biz o sayfaya ulaşabileceğimiz anlamına gelir.
Bazı siteler absürt dosya isteklerine karşı da 200 cevabı verebilir. Burada yapılan isteğe karşılık olarak ana sayfaya yönlendirmesidir. Yine de bir açık bulursak eğer Size bölümünden 200 cevabı aldığımız dosyaların boyutunu sıralayabiliriz ve hedefimize ulaşabiliriz.
Eğer bu tür sayfalarla karşılaştıysak zafiyeti bulmuşuz demektir. Dizinlerde gezip dosya yükleyebileceğimiz sayfa arayabiliriz.
Şimdi de PortSwigger’dan bir lab ile örnekleyelim.
Bizden /etc/passwd dosyasına ulaşmamızı istemiş. Bu sefer BurpSuite üzerinden deneyelim bize dosya getiren her paketi inceleyeceğiz.
Ve BurpSuite gelen 2. Pakette bir resim dosyası getirdiğini farkediyoruz yukarıdaki gibi.
Bu paketi denemeler yapmak için Repeater’a yolluyorum.
Yukarıdaki gibi denemeler yapmaya başladım her adımda aşağıdaki gibi bir /../ ekliyoruz
Bu şekilde deneme yaparak sonunda dizinin bulunduğu noktayı bulmayı başardık.
Peki neden /../ ekliyorum: İşletim sistemlerinde örneğin cd .. komutu verdiğimizde bir dizin geriye gider yani /../../ yaptığımız zaman 2 dizin geri gitmiş oluyoruz.
Peki Gerçek Web Sitelerinde Laboratuvarlardaki Gibi Çıkar Mı?
Evet mümkün. Yaptığımız örnekler gerçek web sitelerinde zafiyet bulmamızı sağlayabilir. Bunun dışında gönderdiğimiz dosya isteklerini encoding yaparak da yollayabiliriz bazı filtreleri aşmasını sağlayabilir.
Birkaç Örnek Path Traversal Raporları
https://hackerone.com/reports/1415820
https://hackerone.com/reports/1131465
https://hackerone.com/reports/1132160